﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.Xna.Framework;

namespace DARE
{
    /// <summary>
    /// Use this interface to be compatible with the orderer
    /// <code>
    /// <example>
    ///     use this interface , and called the method RegisterOrdererLeaf of the Render3D to be add
    ///     and called the method UnRegisterOrdererLeaf of the Render3D to be removed
    /// </example>
    /// </code>
    /// </summary>
    public interface IOrderedDraw : IOrdered<IOrderedDraw>
    {
        #region Property

        uint EffectId { get; }
        string UniqueId { get; }
        float CameraDistance { get; }
        bool IsTransparency { get; }
        CRasterizationContent State { get; }

        bool NodeInformationChanged { get; set; }

        #endregion

        #region Event

        event DataChanged<IOrderedDraw, bool> TransparencyChanged;

        #endregion

        #region Method

        void InitializeDraw(GameTime _time);

        void Draw(GameTime _time);

        #endregion
    }
}
